package br.usp.ime.protoc.neuroimagem;

import com.google.gwt.user.client.rpc.IsSerializable;

import br.usp.ime.protoc.pessoa.Medico;
import br.usp.ime.protoc.pessoa.Paciente;

public abstract class Exame implements IsSerializable
{
   private String data;

   public String getData()
   {
      return this.data;
   }

   public void setData(String value)
   {
      if (this.data != value)
      {
         
         this.data = value;
         
      }
   }

   private Lado lado;

   private Lado getLado()
   {
      return this.lado;
   }

   private void setLado(Lado value)
   {
      if (this.lado != value)
      {
         
         this.lado = value;
         
      }
   }

   private String localArmazenamento;

   public String getLocalArmazenamento()
   {
      return this.localArmazenamento;
   }

   public void setLocalArmazenamento(String value)
   {
      if (this.localArmazenamento != value)
      {
         
         this.localArmazenamento = value;
         
      }
   }

   private String localRealizacao;

   public String getLocalRealizacao()
   {
      return this.localRealizacao;
   }

   public void setLocalRealizacao(String value)
   {
      if (this.localRealizacao != value)
      {
         
         this.localRealizacao = value;
         
      }
   }

   private String maquina;

   public String getMaquina()
   {
      return this.maquina;
   }

   public void setMaquina(String value)
   {
      if (this.maquina != value)
      {
         
         this.maquina = value;
         
      }
   }

   private boolean realizacaoBemSucedida;

   public boolean isRealizacaoBemSucedida()
   {
      return this.realizacaoBemSucedida;
   }

   public void setRealizacaoBemSucedida(boolean value)
   {
      if (this.realizacaoBemSucedida != value)
      {
         
         this.realizacaoBemSucedida = value;
         
      }
   }

   /**
    * <pre>
    *        1..*    has     1 
    * Exame ------------------- Medico
    *        exame      medico 
    * </pre>
    */
   private Medico medico;

   public Medico getMedico()
   {
      return this.medico;
   }

   public boolean setMedico(Medico value)
   {
      boolean changed = false;
      if (this.medico != value)
      {
         Medico oldValue = this.medico;
         
         if (this.medico != null)
         {
            this.medico = null;
            oldValue.removeFromExame (this);
         }
         this.medico = value;
         if (value != null)
         {
            value.addToExame (this);
         }
         changed = true;
         
      }
      return changed;
   }

   /**
    * <pre>
    *        1..*     has      1 
    * Exame --------------------- Paciente
    *        exame      paciente 
    * </pre>
    */
   private Paciente paciente;

   public Paciente getPaciente()
   {
      return this.paciente;
   }

   public boolean setPaciente(Paciente value)
   {
      boolean changed = false;
      if (this.paciente != value)
      {
         Paciente oldValue = this.paciente;
         
         if (this.paciente != null)
         {
            this.paciente = null;
            oldValue.removeFromExame (this);
         }
         this.paciente = value;
         if (value != null)
         {
            value.addToExame (this);
         }
         changed = true;
         
      }
      return changed;
   }

   /**
    * <pre>
    *        1..*     has     1 
    * Exame -------------------- Projeto
    *        exame      projeto 
    * </pre>
    */
   private Projeto projeto;

   public Projeto getProjeto()
   {
      return this.projeto;
   }

   public boolean setProjeto(Projeto value)
   {
      boolean changed = false;
      if (this.projeto != value)
      {
         Projeto oldValue = this.projeto;
         
         if (this.projeto != null)
         {
            this.projeto = null;
            oldValue.removeFromExame (this);
         }
         this.projeto = value;
         if (value != null)
         {
            value.addToExame (this);
         }
         changed = true;
         
      }
      return changed;
   }

   public void removeYou()
   {
      Paciente tmpPaciente = getPaciente ();
      if (tmpPaciente != null)
      {
         setPaciente (null);
      }
      Medico tmpMedico = getMedico ();
      if (tmpMedico != null)
      {
         setMedico (null);
      }
      Projeto tmpProjeto = getProjeto ();
      if (tmpProjeto != null)
      {
         setProjeto (null);
      }
   }

}
